package 集合;

import java.util.HashMap;
import java.util.Map;

public class No290单词规律 {

    /**
     * 给定一种规律 pattern 和一个字符串 str ，判断 str 是否遵循相同的规律。
     * 这里的 遵循 指完全匹配，例如， pattern 里的每个字母和字符串 str 中的每个非空单词之间
     * 存在着双向连接的对应规律。
     * 示例1:
     * 输入: pattern = "abba", str = "dog cat cat dog"
     * 输出: true
     * 示例 2:
     * 输入:pattern = "abba", str = "dog cat cat fish"
     * 输出: false
     */

    public static boolean wordPattern(String pattern, String s) {

        if((pattern.equals("")&&s.equals("")))
            return true;

        Map<String,Character> map=new HashMap<>();

        String[] arr = s.split(" ");

        if(arr.length!=pattern.length())
            return false;

        for (int i = 0; i < arr.length; i++) {

            Character c = map.get(arr[i]);
            if(c==null){
                //取不到也要进行检验
                char cc=pattern.charAt(i);
                boolean b = map.containsValue(cc);
                if(b)
                    return false;
                map.put(arr[i],pattern.charAt(i));
            }else{
                //不是第一个就来验证
                char cc=pattern.charAt(i);
                if(cc!=c)
                    return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        boolean b = wordPattern("jquery", "jquery");
        System.out.println(b);
    }

}
